package com.kyrie.lib_sys.utils.learn.TimeDemo;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class TimeDemo01 {
    public static List<Map<String, String>> timeList = new ArrayList<>();
    String minTime = "2025-07-01 09:00:00";
    String maxTime = "2025-07-01 09:00:03";

    public static void main(String[] args) {
        timeList.add(Map.of("prepareTime", "2025-07-01 09:00:00",
                "travelTime", "2025-07-01 09:00:01",
                "startTime", "2025-07-01 09:00:02",
                "completeTime", "2025-07-01 09:00:03"));

        timeList.add(Map.of("prepareTime", "2025-07-01 09:00:10",
                "travelTime", "2025-07-01 09:00:11",
                "startTime", "2025-07-01 09:00:12",
                "completeTime", "2025-07-01 09:00:13"));


        System.out.println(timeCheck("2025-07-01 09:00:14"));

        System.out.println(timeCheck("2025-07-01 09:00:03"));
    }

    // 时间校验判断Map集合是否存在重复时间
    //先遍历list集合里面每一个元素(map),  在遍历map集合里面每一个元素entity(key,value)
    // 通过entity获取对应的value,判断value是否与需要校验的时间重合

    public static boolean timeCheck(String time) {
        //time和 一段时间 去做校验   最小时间和最大时间的称为一个时间段, 如果传递的时间与这段时间存在重叠,就提示错误

        //这么获取时间段?  将value(时间)放入集合中做判断?
        for (Map<String, String> map : timeList) {
            for (Map.Entry<String, String> entry : map.entrySet()) {

                if (entry.getValue().equals(time)) {

                    System.out.println("时间表里存在重叠时间,13:00存在重叠时间");
                    return true;
                }
            }
        }
        return false;
    }


}



































/*
   //使用stream流格式
   public static boolean timeCheck(String time) {
      return timeList.stream()
              .flatMap(map -> map.values().stream())  //遍历每一个 Map，然后将其所有 value 提取出来形成一个新的扁平化流。
              .anyMatch(time::equals);                //并检查其中是否有任意一个 value 等于传入的 time 参数
   }
*/

